package br.com.foxinline.manager.pesquisar.ep;

import br.com.foxinline.modelo.Anexo;
import br.com.foxinline.modelo.Pessoa;
import br.com.foxinline.modelo.ep.AtoTipoEP;
import br.com.foxinline.modelo.ep.SeloEP;
import br.com.foxinline.modelo.ep.Testamento;
import br.com.foxinline.servico.ep.AtoTipoEPServico;
import br.com.foxinline.servico.ep.TestamentoServico;
import br.com.foxinline.utilitario.Caracteres;
import br.com.foxinline.utilitario.Mensagem;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author cadomeireles
 */
@ViewScoped
@ManagedBean
public class ManagerPesquisarTestamento implements Serializable {
    
    @EJB
    TestamentoServico testamentoServico;
    @EJB
    AtoTipoEPServico atoTipoEPServico;    
    
    private Testamento testamento;
    private Testamento testamentoVisualizar;
    private Testamento testamentoDeletar;
    
    private List<Testamento> testamentos;

    private List<SeloEP> selosEPVisualizar;
    private List<Anexo> anexosVisualizar;    

    private String visualizarId;

    @PostConstruct
    public void init() {
        instanciar();
        delegar();
    }

    private void instanciar() {
        this.testamento = new Testamento();
        this.testamento.setTestador(new Pessoa());
        this.testamentoVisualizar = new Testamento();
        this.testamentoDeletar = new Testamento();

        this.testamentos = new ArrayList<Testamento>();
    }

    private void delegar() {
        Map<String, String> parametros = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
        this.visualizarId = parametros.get("testamentoId");

        if (visualizarId != null) {
            this.testamentoVisualizar = testamentoServico.pesquisar(Long.parseLong(visualizarId));
            this.selosEPVisualizar = testamentoServico.obterSelos(this.testamentoVisualizar);
            this.anexosVisualizar = testamentoServico.obterAnexos(this.testamentoVisualizar);
        }

    }

    public void pesquisar() {
        this.testamentos = testamentoServico.pesquisar(this.testamento);
    }    
    
    public void limpar() {
        instanciar();
    }
    
    public void deletar() {
        testamentoServico.deletar(this.testamentoDeletar);
        pesquisar();

        Mensagem.messagemInfo("Testamento excluído com sucesso!");
    }        
    
    public List<AtoTipoEP> autocompletarAtoTipoEP(String query) {
        return atoTipoEPServico.autocompletarAtoTipoRCTO(query);
    }

    public String adicionarMascaraCPF(String string) {
        return  Caracteres.adicionarMascara(string, Caracteres.cpfMask);
    }

    public Testamento getTestamento() {
        return testamento;
    }

    public void setTestamento(Testamento testamento) {
        this.testamento = testamento;
    }

    public List<Testamento> getTestamentos() {
        return testamentos;
    }

    public void setTestamentos(List<Testamento> testamentos) {
        this.testamentos = testamentos;
    }

    public Testamento getTestamentoDeletar() {
        return testamentoDeletar;
    }

    public void setTestamentoDeletar(Testamento testamentoDeletar) {
        this.testamentoDeletar = testamentoDeletar;
    }

    public List<Anexo> getAnexosVisualizar() {
        return anexosVisualizar;
    }

    public void setAnexosVisualizar(List<Anexo> anexosVisualizar) {
        this.anexosVisualizar = anexosVisualizar;
    }

    public List<SeloEP> getSelosEPVisualizar() {
        return selosEPVisualizar;
    }

    public void setSelosEPVisualizar(List<SeloEP> selosEPVisualizar) {
        this.selosEPVisualizar = selosEPVisualizar;
    }

    public Testamento getTestamentoVisualizar() {
        return testamentoVisualizar;
    }

    public void setTestamentoVisualizar(Testamento testamentoVisualizar) {
        this.testamentoVisualizar = testamentoVisualizar;
    }

}
